package cn.wangyaying.salor;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;

import cn.wangyaying.util.Picture;

public class Planet extends Star {

	// 除了图片，坐标。行星沿着某个椭圆运行；长轴，短轴 速度。绕着某个 Star飞。

	double longAxis; // 椭圆的长轴；

	double shortAxis; // 椭圆的短轴；

	double speed; // 飞行的速度；

	double degree;// 飞行的角度

	Star center; // 太阳的中心

	public void draw(Graphics g) { // Graphics 制图 (重画)

		super.draw(g); // 调用父类画的太阳。

		drawTrace(g); // 画出 地球绕着太阳转的轨迹

		move();// 调用地球移动的轨迹

	}

	public void drawTrace(Graphics g) {

		// 定义地球绕太阳转的轨迹

		double ovalX; // 定义地球绕太阳旋转的长轴

		double ovalY; // 定义地球绕太阳旋转的短轴

		double ovalWidth; // 定义地球绕太阳旋转的总宽度

		double ovalHeight; // 定义地球绕太阳旋转的总高度

		ovalWidth = longAxis * 2;// 总宽度等于椭圆的长轴x2;

		ovalHeight = shortAxis * 2;// 总高度等于椭圆的短轴x2;

		ovalX = (center.x + center.width / 2) - longAxis;

		ovalY = (center.y + center.height / 2) - shortAxis;

		// 保存原来的颜色；

		Color c = g.getColor();

		// 创建一个新的颜色

		g.setColor(Color.blue);

		// 画出椭圆的轨迹

		g.drawOval((int) ovalX, (int) ovalY, (int) ovalWidth, (int) ovalHeight);

		// 恢复原先的颜色

		g.setColor(c);

	}

	public void move() {

		// 沿着椭圆轨迹飞行

		x = center.x + longAxis * Math.cos(degree); // 太阳的圆心+椭圆长轴*每次旋转所转过的角度

		y = center.y + shortAxis * Math.sin(degree);// 太阳的圆心+椭圆短轴*每次旋转所转过的角度

		degree += speed; // 每旋转一次角度加1

	}

	public Planet(Star center, String imgpath, double longAxis,

			double shortAxis, double speed) {

		this.center = center;

		this.x = center.x + longAxis; // 行星的x轴坐标等于太阳的x轴坐标加上长轴的坐标

		this.y = center.y; // 行星的y轴坐标等于太阳的y轴坐标

		this.img = Picture.getImage(imgpath);

		this.longAxis = longAxis;

		this.shortAxis = shortAxis;

		this.speed = speed;

	}

	// 定义三个有参的行星构造器

	public Planet(Image img, double x, double y) {

		super(img, x, y);

	}

	// 定义三个有参的行星对的路径

	public Planet(String imgpath, double x, double y) {

		super(imgpath, x, y);

	}

}
